Skip to content

Run the Python 3.9 Linux CI job on ubuntu-24.04 - #761

Merged
nicholasserra merged 2 commits into
trentm:masterfrom
zachsplat:ci-python39-ubuntu-24.04
Nov 4, 2026
Merged

nicholasserra merged 2 commits into
trentm:masterfrom
zachsplat:ci-python39-ubuntu-24.04

Conversation

@zachsplat

Copy link
Copy Markdown
Contributor

ubuntu-latest is moving to Ubuntu 26.04 (GitHub's runner-images announcement, issue 14748, planned to finish by 19 November), and actions/setup-python has no Python 3.9 build for 26.04. PR runs here are already landing on it. In run 41510521877 (PR #760, 2 November, image ubuntu-26.04) the build (3.9, ubuntu-latest) job stopped at its Set up Python 3.9 step with

The version '3.9' with architecture 'x64' was not found for Ubuntu 26.04.

and fail-fast then cancelled the other 17 jobs, so the whole run shows as failed. Run 41510483823 on the same PR went the same way. In both runs the 3.10 to 3.14 Linux legs had already passed make testone and make testredos on 26.04 before they were cancelled, so 3.9 is the only leg that breaks there. The master push run for cecee4f, on ubuntu-24.04, passed (run 41391057067).

This changes the one runs-on line in .github/workflows/python.yaml so that only the (3.9, ubuntu-latest) leg runs on ubuntu-24.04. The matrix values are unchanged, so the job names stay the same (that leg is still named build (3.9, ubuntu-latest)) and any required checks keep matching. macOS, Windows and the other Linux legs keep their runners.

What I ran: actionlint 1.7.12 on the file before and after (the same single shellcheck info note on the pip install .[all] line both times, nothing new), and a small script that expands the matrix, evaluates the runs-on expression, and looks up each setup-python request in the versions-manifest.json that setup-python reads. Before the change, one request (3.9 on 26.04) has no build; after it, none do, and 3.9 resolves to 3.9.25 on 24.04. I have not run the workflow itself, so the checks on this PR are the real test.

I kept the 3.9 leg because python_requires is still >=3.9. Would you rather drop 3.9 from CI and python_requires instead?

actions/setup-python has no Python 3.9 build for Ubuntu 26.04, which
ubuntu-latest is moving to, so the (3.9, ubuntu-latest) leg fails at
setup and fail-fast cancels the rest of the matrix. Run only that leg
on ubuntu-24.04; the matrix and job names stay the same.
@nicholasserra

Copy link
Copy Markdown
Collaborator

Thanks! Probably fine to just drop 3.9 from everything if it simplifies CI

Per review: remove 3.9 from the CI matrix (and the ubuntu-24.04 pin it
needed), from python_requires and the classifiers in setup.py, and
from the tox envlist.
@zachsplat

Copy link
Copy Markdown
Contributor Author

Done in 0322a22: 3.9 is gone from the CI matrix (so the ubuntu-24.04 pin is no longer needed and runs-on is back to matrix.os), from python_requires (now >=3.10, <4) and the classifiers in setup.py, and from the tox envlist. CHANGES.md only mentions 3.9 as an old release number, so I left it alone. The PR title still says 3.9 on ubuntu-24.04; feel free to rename it on merge, or tell me and I will.

@nicholasserra

Copy link
Copy Markdown
Collaborator

LGTM thanks!

@nicholasserra
nicholasserra merged commit e5171df into trentm:master Nov 4, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants